﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using MySql.Data;
using MySql.Data.MySqlClient;


namespace SistemaPetShop.Negocio
{
    public class Fornecedor
    {
        OleDbDataReader dataReaderAccess;
        MySqlDataReader dataReaderMySql;
        StringBuilder query = new StringBuilder();


        public int _QtLogradouro()
        { 
            Conexao c = new Conexao();
            c.AbrirConexao();
            int qtde = c.Consulta("SELECT count(*) FROM tipologradouro t;").FieldCount;
            return qtde;
        }

        public DataTable _TLogradouro()
        {

            DataTable dt = new DataTable();
            Conexao c = new Conexao();
            c.AbrirConexao();
            dataReaderMySql = c.Consulta("SELECT descricao FROM tipologradouro t;");
            dt.Load(dataReaderMySql);
            c.FecharConexao();
            return dt;

        }

        public bool _ApagaFornecedor(Int32 idFornecedor)
        {
            Conexao c = new Conexao();
            c.AbrirConexao();
            bool retorno = c.Insert("DELETE FROM fornecedor where idFornecedor = " + idFornecedor.ToString());
            c.FecharConexao();
            return retorno;
        }


        public DataTable _EditarFornecedor(Int32 idFornecedor)
        {
            DataTable dt = new DataTable();
            Conexao c = new Conexao();
            c.AbrirConexao();
            dataReaderMySql = c.Consulta("select * from fornecedor where idFornecedor = " + idFornecedor.ToString());
            dt.Load(dataReaderMySql);
            c.FecharConexao();
            return dt;
        }




        public DataTable _ListaFornecedor()
        {
            DataTable dt = new DataTable();
            Conexao c = new Conexao();
            c.AbrirConexao();
            dataReaderMySql = c.Consulta("select idFornecedor,razaoSocial,nomeContato,fone1,fone2,celular,operadora,email,site from fornecedor;");
            dt.Load(dataReaderMySql);
            c.FecharConexao();
            return dt;
        }

        public DataTable _ListaFornecedorEspecifico(string conteudoSerPesquisado, string tipoPesquisa)
        {
            DataTable dt = new DataTable();
            Conexao c = new Conexao();
            c.AbrirConexao();
            dataReaderMySql = c.Consulta("call pPesquisaFornecedor ('" + conteudoSerPesquisado + "','" + tipoPesquisa  + "')");
            dt.Load(dataReaderMySql);
            c.FecharConexao();
            return dt;

        }

        public DataTable _CarregarEndereco(string cep)
        {
            DataTable dt = new DataTable();
            Conexao c = new Conexao();
            c.AbrirConexaoAccess();
            query.Append("SELECT LOG_LOGRADOURO.LOG_NU, LOG_LOGRADOURO.UFE_SG, LOG_LOGRADOURO.LOG_NO, LOG_LOGRADOURO.CEP, LOG_LOGRADOURO.TLO_TX, LOG_LOCALIDADE.LOC_NO, LOG_BAIRRO.BAI_NO FROM (LOG_LOCALIDADE LEFT JOIN (LOG_BAIRRO LEFT JOIN LOG_FAIXA_BAIRRO ON LOG_BAIRRO.BAI_NU = LOG_FAIXA_BAIRRO.BAI_NU) ON LOG_LOCALIDADE.LOC_NU = LOG_BAIRRO.LOC_NU) INNER JOIN LOG_LOGRADOURO ON LOG_LOCALIDADE.LOC_NU = LOG_LOGRADOURO.LOC_NU WHERE (((LOG_LOGRADOURO.CEP)= '");
            query.Append(cep);
            query.Append("'  And (LOG_LOGRADOURO.CEP) Between [LOG_FAIXA_BAIRRO].[FCB_CEP_INI] And [LOG_FAIXA_BAIRRO].[FCB_CEP_FIM]));");
            dataReaderAccess = c.ConsultaAccess(query.ToString());
            query.Remove(0, query.Length);
            dt.Load(dataReaderAccess);
            c.FecharConexaoAccess();
            return dt;        
        }


        public bool _InsereFornecedor(string razaoSocial,string cnpj,string cep,string tipoLogradouro,string logradouro,string numero,
            string bairro,string cidade, string estado,string telefone1,string telefone2, string celular,string operadora,string fax,
            string representante,string email, string site, string observacoes
            )
        {
            Conexao c = new Conexao();
            c.AbrirConexao();

            string dt = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff");

            query.Append("call pInsereFornecedor ( '");
            query.Append(razaoSocial.ToUpper() + "','");
            query.Append(cnpj.ToUpper() + "','");
            query.Append(logradouro.ToUpper() + "','");
            query.Append(numero.ToUpper() + "','");
            query.Append(bairro.ToUpper() + "','");
            query.Append(cidade.ToUpper() + "','");
            query.Append(estado.ToUpper() + "','");
            query.Append(cep.ToUpper() + "','");
            query.Append(telefone1.ToUpper() + "','");
            query.Append(telefone2.ToUpper() + "','");
            query.Append(fax.ToUpper() + "','");
            query.Append(celular.ToUpper() + "','");
            query.Append(operadora.ToUpper() + "','");
            query.Append(email.ToUpper() + "','");
            query.Append(site.ToUpper() + "','");
            query.Append(dt.ToUpper() + "','");
            query.Append(representante.ToUpper() + "','");
            query.Append(observacoes.ToUpper() + "','");
            query.Append(tipoLogradouro.ToUpper() + "');");



            // DateTime.ParseExact(data, "yyyyMMdd", null);

            bool retorno = c.Insert(query.ToString());
            query.Remove(0, query.Length);
            c.FecharConexao();
            if (retorno)
            {
                return true;
            }
            else
            {
                return false;
            }



        }


        // Atualiza dados de um determinado fornecedor
        public bool _AtualizaFornecedor(string razaoSocial, string cnpj, string cep, string tipoLogradouro, string logradouro, string numero,
                    string bairro, string cidade, string estado, string telefone1, string telefone2, string celular, string operadora, string fax,
                    string representante, string email, string site, string observacoes,string idFornecedor
                                     )
        {
            Conexao c = new Conexao();
            c.AbrirConexao();

            string dt = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff");

            query.Append("call pEditarFornecedor ( '");
            query.Append(razaoSocial.ToUpper() + "','");
            query.Append(cnpj.ToUpper() + "','");
            query.Append(logradouro.ToUpper() + "','");
            query.Append(numero.ToUpper() + "','");
            query.Append(bairro.ToUpper() + "','");
            query.Append(cidade.ToUpper() + "','");
            query.Append(estado.ToUpper() + "','");
            query.Append(cep.ToUpper() + "','");
            query.Append(telefone1.ToUpper() + "','");
            query.Append(telefone2.ToUpper() + "','");
            query.Append(fax.ToUpper() + "','");
            query.Append(celular.ToUpper() + "','");
            query.Append(operadora.ToUpper() + "','");
            query.Append(email.ToUpper() + "','");
            query.Append(site.ToUpper() + "','");
            query.Append(dt.ToUpper() + "','");
            query.Append(representante.ToUpper() + "','");
            query.Append(observacoes.ToUpper() + "','");
            query.Append(tipoLogradouro.ToUpper() + "','");
            query.Append(idFornecedor.ToUpper() + "');");

            bool retorno = c.Insert(query.ToString());
            query.Remove(0, query.Length);
            c.FecharConexao();
            if (retorno)
            {
                return true;
            }
            else
            {
                return false;
            }



        }




    }
}
